﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Xml;

namespace WebUI.Lang
{
    // thay vì dùng cái này thì mình dùng Injection với Interface thì hay hơn, thôi kệ chạy chậm thì sửa lại
    public class BasePage:Page
    {
        private static MyResource resource;
        protected override void InitializeCulture()
        {
            string lang = string.Empty;
            var cookie = Request.Cookies["lang"];
            if (cookie != null && cookie.Value != null)
            {
                lang = cookie.Value;
            }
            else
            {
                lang = "vi";
                cookie = new HttpCookie("lang");
                cookie.Value = "vi";
                Request.Cookies.Add(cookie);
            }
            LoadResource(lang);
            base.InitializeCulture();
        }

        private void LoadResource(string lang)
        {
            
                resource = new MyResource();
                resource.xmldoc = new XmlDocument();
                string physicalPath = HttpContext.Current.Request.PhysicalApplicationPath + "lang\\" + lang + ".xml";

                resource.xmldoc.Load(physicalPath);
                resource.nodes = resource.xmldoc.GetElementsByTagName("obj");
            

        }
        /// <summary>
        /// Cái này lấy text từ xml ra, mà tao thấy nó chưa tối ưu, cần phải tối ưu nó
        /// </summary>
        /// <param name="obj"></param>
        /// <returns></returns>
        public static string GetText(string obj)
        {
            if (resource != null)
            {
                string result = "";
                foreach (XmlNode node in resource.nodes)
                {
                    if (node.Attributes.Item(0).InnerText == obj)
                    {
                        result = node.ChildNodes[0].InnerText;
                        break;
                    }
                }
                return result;
            }
            return null;
            
        }
    }
}